Диаграмма классов:
 _____________________________________        _____________________________________
|                                     |      |                                     |
|              Driver                 |      |            BoardAnyCar             |
|_____________________________________|      |_____________________________________|
| + getInstance(): Driver*            |      | - driverBoarded: bool               |
|_____________________________________|      | - passengerCount: int               |
                                             | - maxPassengerCount: int             |
                                             |_______________________________________|
                                  △                     △                 △
                                  |                     |                 |
                                  |                     |                 |
          ________________________|_______              |                 |
         |                         |        |             |                 |
         |                         |        |             |                 |
  _________________       _________________     _________________     _________________
 |                 |     |                 |   |                 |   |                 |
 |   BoardTaxi     |     |   BoardBus      |   |  TaxiBoardFactory|   |  BusBoardFactory|
 |_________________|     |_________________|   |_________________|   |_________________|
 | + boardDriver() |     | + boardDriver() |   |_________________|   |_________________|
 | + boardPassenger() |  | + boardPassenger() |                        |_________________|
 | + start()        |     | + start()        |
 |_________________|     |_________________|


Диаграмма последовательности:
-----------------              ----------------            ----------------
|   Client      |              | TaxiBoardFactory|            | BusBoardFactory|
-----------------              ----------------            ----------------
      |                               |                               |
      |      createCarBoard()          |                               |
      |------------------------------>|                               |
      |                               |      createCarBoard()          |
      |                               |------------------------------>|
      |                               |                               |
      |       BoardAnyCar*            |                               |
      |<------------------------------|                               |
      |                               |      BoardAnyCar*             |
      |                               |<------------------------------|
      |                               |                               |
      |   boardDriver()               |                               |
      |------------------------------>|                               |
      |                               |       boardDriver()           |
      |                               |------------------------------>|
      |                               |                               |
      |   boardPassenger()            |                               |
      |------------------------------>|                               |
      |                               |       boardPassenger()        |
      |                               |------------------------------>|
      |                               |                               |
      |   start()                     |                               |
      |------------------------------>|                               |
      |                               |       start()                 |
      |                               |------------------------------>|
      |                               |                               |
